import time
from threading import Thread
import threading
def son():
    while True:
        print('in son')
        time.sleep(1)
        print('son end')

def son2():
    for i in range(3):
        print('in son2****')
        time.sleep(1)
        print('son2 end')
#flag a
print(1)
t=Thread(target=son)
t.daemon=True
t.start()
print('lk')
Thread(target=son2).start()#非守护线程的子线程
print('主线程结束')
print(threading.enumerate())

#flag b    flag a到 flag b 只要0秒钟，线程开启速度非常快
#主线程会等待子线程之后才结束
#为什么？
    #主线程结束进程就会结束

# 守护线程随着主线程的结束而结束
# 守护线程会在主线程的代码结束之后继续守护其他子线程么? 会的
# 守护线程 随着主线程的结束而结束
    # 如果主线程代码结束之后还有其他子线程在运行,守护线程也守护

# 为什么?
    # 守护进程和守护线程的结束原理不同
    # 守护进程需要主进程来回收资源
    # 守护线程是随着进程的结束才结束的
        # 其他子线程-->主线程结束-->主进程结束-->整个进程中所有的资源都被回收-->守护线程也会被回收

# 进程是资源分配单位
# 子进程都需要它的父进程来回收资源
# 线程是进程中的资源
# 所有的线程都会随着进程的结束而被回收的
